# #sum()求1--100之和
# print(sum(range(0, 101)))
#
# #利用global 修改全局变量
# a = 5
# def fn():
#     global a
#     a = 4
# fn()
# print(a)
#
# # 5个标准库：os，sys,re,math,datetime
# import os
# print(os.path.abspath('.'))
# print(os.path.abspath('..'))
# print(os.path.abspath('..\..'))
# print(os.path.abspath('..\..\..'))
# import sys
# print(sys.path)
# import re
# # 修饰符 描述
# # re.I 使匹配对大小写不敏感
# # re.L 做本地化识别（locale-aware）匹配
# # re.M 多行匹配，影响 ^ 和 $
# # re.S 使 . 匹配包括换行在内的所有字符
# # re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
# # re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
# str1 = """
#     a b c d e f g a
#     a b c d e f g a
# """
# print(re.findall('a', str1, flags=re.S))
# import math
# fabs = math.fabs(-0.33333)
# print(fabs)
# # 向下，向上取整数
# print(math.floor(3.999), math.ceil(3.9999))
# from datetime import datetime
# print(datetime.now())
# print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))


#
dic = {'name': "test", 'age': "22"}
print(dic)
del dic['name']
print(dic)
dic1 = {'role': "admin", 'job': "测试"}
dic.update(dic1)
print(dic)

# 同一进程有多线程时，一个线程运行时占用python解释器（GIL），其它线程无法运行，必须等这个线程运行完后，其它线程才能运行；多进程中每个进程系统都分配了资源，相当于每个进程有了一个python解释器，可以多进程，但进程系统资源开销大

# 列表去重
ll = [1, 2, 3, 3, 4, 4, 5]
ll1 = list(set(ll))
print(ll)
print(ll1)

def fn(*a, **kwa):
    print(a, kwa)
fn('a', b=2, c=3)

# range(100)python3返回iterator
res = range(100)
res = iter(res)
print(next(res))

# 函数可以作为参数传递的语言，可以使用装饰器,在函数中定义函数

def hi(name="yahoo"):
    print('hi()')

    def greet():
        return "greet函数内"

    def welcome():
        return "welcome函数内"

    if name == "yahoo":
        return greet
    else:
        return welcome
a = hi()
print(a)
print(a())


ll2 = [1, 2, 3, 4, 5]
# def fn(x):
#     return x**2
#
# res = map(fn, ll2)
# res = [i for i in res if i>10]
# print(res)
#
#
#
#
# class A:
#     def __init__(self):
#         print('A __init__')
#
# class B(A):
#     pass
#
# class C(B):
#     pass
#
# c = C()
